const express = require('express')
const Router = express.Router()
const model = require('./model')
const User = model.getModel('user')
const utils = require('utility')
const _filter = {
    'pwd': 0,
    '__v': 0
}

Router.get('/list', function (req, res) {
    const {
        type
    } = req.query
    User.find({
        type
    }, function (err, doc) {
        return res.json({
            code: 0,
            data: doc
        })
    })
})

Router.post('/register', function (req, res) {
    const {
        user,
        pwd,
        type
    } = req.body
    User.findOne({
        user
    }, function (err, doc) {
        if (doc) {
            return res.json({
                code: 1,
                msg: '用户名已存在'
            })
        }

        const userModel = new User({
            user,
            type,
            pwd: utils.md5(pwd)
        })

        userModel.save((e, d) => {
            if (e) {
                return res.json({
                    code: 1,
                    msg: '后台出错'
                })
            }
            const {
                user,
                type,
                _id
            } = d
            res.cookie('userid', _id)
            return res.json({
                code: 0,
                data: {
                    user,
                    type,
                    _id
                }
            })
        })
    })
})

Router.post('/login', function (req, res) {
    const {
        user,
        pwd
    } = req.body
    User.findOne({
        user,
        pwd: utils.md5(pwd)
    }, _filter, (err, doc) => {
        if (!doc) {
            return res.json({
                code: 1,
                msg: '用户名或密码错误'
            })
        }

        res.cookie('userid', doc._id)
        return res.json({
            code: 0,
            data: doc
        })
    })
})

Router.get('/info', function (req, res) {
    const {
        userid
    } = req.cookies
    if (!userid) {
        return res.json({
            code: 1
        })
    }
    User.findOne({
        _id: userid
    }, _filter, (err, doc) => {
        if (err) {
            return res.json({
                code: 1,
                msg: '后端出错'
            })
        }
        if (doc) {
            return res.json({
                code: 0,
                data: doc
            })
        }
    })
})

Router.post('/update', function (req, res) {
    const userid = req.cookies.userid
    if (!userid) {
        return res.json({
            code: 1
        })
    }
    const body = req.body
    User.findByIdAndUpdate(userid, body, (err, doc) => {
        const data = Object.assign({}, {
            user: doc.user,
            type: doc.type
        }, body)
        return res.json({
            code: 0,
            data
        })
    })
})

module.exports = Router